﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 进窑工位采集服务
{
    public partial class Form1 : Form
    {
        int i;
        int j;

        ModBus采集类1 modBus;
        public Form1()
        {
            InitializeComponent();
            modBus = ModBus采集类1.GetInstance("192.168.0.76","");
            modBus.采集事件 += ModBus_采集事件;
            //modBus.错误日记事件 += ModBus_错误日记事件;

        }

        private void ModBus_错误日记事件(int str)
        {
            if (InvokeRequired)
            {
                // 如果是后台调用显示UI，那么就使用委托来切换到前台显示
                Invoke(new Action<int>(ModBus_错误日记事件), str);
                return;
            }

            label3.Text = (i++).ToString();
            // 提取数据
            //double temp1 = content["temp"].ToObject<double>();
            //bool machineEnable = content["enable"].ToObject<bool>();
            //int product = content["product"].ToObject<int>();


            // 实际项目的时候应该在此处进行将数据存储到数据库，你可以选择MySql,SQL SERVER,ORACLE等等
            // SaveDataSqlServer( temp1 );         // 此处演示写入了SQL 数据库的方式

            // 开始显示

        }

        private void ModBus_采集事件(string str)
        {
            // 本方法是考虑了后台线程调用的情况
            if (InvokeRequired)
            {
                // 如果是后台调用显示UI，那么就使用委托来切换到前台显示
                Invoke(new Action<string>(ModBus_采集事件), str);
                return;
            }

            label2.Text = (j++).ToString();
            // 提取数据
            //double temp1 = content["temp"].ToObject<double>();
            //bool machineEnable = content["enable"].ToObject<bool>();
            //int product = content["product"].ToObject<int>();


            // 实际项目的时候应该在此处进行将数据存储到数据库，你可以选择MySql,SQL SERVER,ORACLE等等
            // SaveDataSqlServer( temp1 );         // 此处演示写入了SQL 数据库的方式

            // 开始显示
            label1.Text = str;
            //label2.BackColor = temp1 > 100d ? Color.Tomato : Color.Transparent;  // 如果温度超100℃就把背景改为红色
            //label3.Text = product.ToString();

            //// 添加到缓存数据
            //AddDataHistory((float)temp1);

            //label5.Text = machineEnable ? "运行中" : "未启动";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //modBus.IsReadRandom = true;

            modBus.IsReadingPlc = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            modBus.IsReadingPlc = false;

        }
    }
}
